cc_library(
    name = "roadengine",
    srcs = [
        "src/ODGlobal.cpp",
        "src/WorldEntityAxis.cpp",
        "src/WorldEntityManager.cpp",
        "src/WorldException.cpp",

        "src/drivers/WorldEntityChangeset.cpp",
        "src/drivers/WorldEntityManagerDriverFile.cpp",
        "src/drivers/WorldEntityManagerDriver.cpp",

        "src/entities/WorldBridge.cpp",
        "src/entities/WorldEntityPart.cpp",
        "src/entities/WorldRoad.cpp",
	"src/entities/WorldConnectable.cpp",
        "src/entities/WorldEntityProperty.cpp",
        "src/entities/WorldRoadObject.cpp",
	"src/entities/WorldController.cpp",
        "src/entities/WorldJunction.cpp",
        "src/entities/WorldRoadObjectParts.cpp",
	"src/entities/WorldControllerParts.cpp",
        "src/entities/WorldJunctionGroup.cpp",
        "src/entities/WorldRoadParts.cpp",
	"src/entities/WorldEntity.cpp",
        "src/entities/WorldJunctionGroupParts.cpp",
        "src/entities/WorldSignal.cpp",
	"src/entities/WorldEntityHeader.cpp",
        "src/entities/WorldJunctionParts.cpp",
        "src/entities/WorldSignalParts.cpp",
	"src/entities/WorldEntityMeta.cpp",
        "src/entities/WorldLaneValidity.cpp",
        "src/entities/WorldTunnel.cpp",

        "src/geom/FOpenDriveImporter.cpp",
        "src/geom/ODRoadGeom.cpp",
        "src/geom/RoadGeom.cpp",
        "src/geom/ODRoadAPI.cpp",
        "src/geom/RoadBuilder.cpp",
        "src/geom/RoadUtil.cpp",

        "src/iterators/WorldArcIterator.cpp",
        "src/iterators/WorldHermiteIterator.cpp",
        "src/iterators/WorldSpiralIterator.cpp",

        "src/refline/WorldRefLineBuilder.cpp",
        "src/refline/WorldRefLineGraph.cpp",
        "src/refline/WorldRefLineSpline.cpp",

        "src/spiral/odrSpiral.c",

        "src/pugixml/pugixml.cpp",

    

        "src/glm/common.hpp",
        "src/glm/exponential.hpp",
        "src/glm/ext.hpp",
        "src/glm/geometric.hpp",
        "src/glm/glm.hpp",
        "src/glm/matrix.hpp",
        "src/glm/mat2x2.hpp",
        "src/glm/mat2x3.hpp",
        "src/glm/mat2x4.hpp",
        "src/glm/mat3x2.hpp",
        "src/glm/mat3x3.hpp",
        "src/glm/mat3x4.hpp",
        "src/glm/mat4x2.hpp",
        "src/glm/mat4x3.hpp",
        "src/glm/mat4x4.hpp",
        "src/glm/vec2.hpp",
        "src/glm/vec3.hpp",
        "src/glm/vec4.hpp",
        "src/glm/packing.hpp",
        "src/glm/trigonometric.hpp",
        "src/glm/vector_relational.hpp",
        "src/glm/fwd.hpp",
        "src/glm/integer.hpp",


        "src/glm/detail/_features.hpp",
        "src/glm/detail/_fixes.hpp",
        "src/glm/detail/func_common.inl.hpp",
        "src/glm/detail/func_common_simd.inl.hpp",
        "src/glm/detail/func_exponential.hpp",
        "src/glm/detail/func_exponential.inl.hpp",
        "src/glm/detail/func_exponential_simd.inl.hpp",
        "src/glm/detail/func_geometric.hpp",
        "src/glm/detail/func_geometric.inl.hpp",
        "src/glm/detail/func_geometric_simd.inl.hpp",
        "src/glm/detail/func_integer.hpp",
        "src/glm/detail/func_integer.inl.hpp",
        "src/glm/detail/func_integer_simd.inl.hpp",
        "src/glm/detail/func_matrix.hpp",
        "src/glm/detail/func_matrix.inl.hpp",
        "src/glm/detail/func_matrix_simd.inl.hpp",
        "src/glm/detail/func_packing.hpp",
        "src/glm/detail/func_packing.inl.hpp",
        "src/glm/detail/func_packing_simd.inl.hpp",
        "src/glm/detail/func_trigonometric.hpp",
        "src/glm/detail/func_trigonometric.inl.hpp",
        "src/glm/detail/func_trigonometric_simd.inl.hpp",
        "src/glm/detail/func_vector_relational.hpp",
        "src/glm/detail/func_vector_relational.inl.hpp",
        "src/glm/detail/func_vector_relational_simd.inl.hpp",
        "src/glm/detail/_noise.hpp",
        "src/glm/detail/setup.hpp",
        "src/glm/detail/_swizzle.hpp",
        "src/glm/detail/_swizzle_func.hpp",
        "src/glm/detail/type_float.hpp",
        "src/glm/detail/type_gentype.hpp",
        "src/glm/detail/type_gentype.inl.hpp",
        "src/glm/detail/type_half.hpp",
        "src/glm/detail/type_half.inl.hpp",
        "src/glm/detail/type_int.hpp",
        "src/glm/detail/type_mat.hpp",
        "src/glm/detail/type_mat.inl.hpp",
        "src/glm/detail/type_mat2x2.hpp",
        "src/glm/detail/type_mat2x2.inl.hpp",
        "src/glm/detail/type_mat2x3.hpp",
        "src/glm/detail/type_mat2x3.inl.hpp",
        "src/glm/detail/type_mat2x4.hpp",
        "src/glm/detail/type_mat2x4.inl.hpp",
        "src/glm/detail/type_mat3x2.hpp",
        "src/glm/detail/type_mat3x2.inl.hpp",
        "src/glm/detail/type_mat3x3.hpp",
        "src/glm/detail/type_mat3x3.inl.hpp",
        "src/glm/detail/type_mat3x4.hpp",
        "src/glm/detail/type_mat3x4.inl.hpp",
        "src/glm/detail/type_mat4x2.hpp",
        "src/glm/detail/type_mat4x2.inl.hpp",
        "src/glm/detail/type_mat4x3.hpp",
        "src/glm/detail/type_mat4x3.inl.hpp",
        "src/glm/detail/type_mat4x4.hpp",
        "src/glm/detail/type_mat4x4.inl.hpp",
        "src/glm/detail/type_vec.hpp",
        "src/glm/detail/type_vec.inl.hpp",
        "src/glm/detail/type_vec1.hpp",
        "src/glm/detail/type_vec1.inl.hpp",
        "src/glm/detail/type_vec2.hpp",
        "src/glm/detail/type_vec2.inl.hpp",
        "src/glm/detail/type_vec3.hpp",
        "src/glm/detail/type_vec3.inl.hpp",
        "src/glm/detail/type_vec4.hpp",
        "src/glm/detail/type_vec4.inl.hpp",
        "src/glm/detail/type_vec4_simd.inl.hpp",
        "src/glm/detail/_vectorize.hpp",

        "src/glm/gtc/bitfield.hpp",
        "src/glm/gtc/matrix_access.inl.hpp",
        "src/glm/gtc/random.inl.hpp",
        "src/glm/gtc/bitfield.inl.hpp",
        "src/glm/gtc/matrix_integer.hpp",
        "src/glm/gtc/reciprocal.hpp",
        "src/glm/gtc/color_encoding.inl.hpp",
        "src/glm/gtc/matrix_inverse.hpp",
        "src/glm/gtc/reciprocal.inl.hpp",
        "src/glm/gtc/color_space.hpp",
        "src/glm/gtc/matrix_inverse.inl.hpp",
        "src/glm/gtc/round.hpp",
        "src/glm/gtc/color_space.inl.hpp",
        "src/glm/gtc/matrix_transform.hpp",
        "src/glm/gtc/round.inl.hpp",
        "src/glm/gtc/constants.hpp",
        "src/glm/gtc/matrix_transform.inl.hpp",
        "src/glm/gtc/type_aligned.hpp",
        "src/glm/gtc/constants.inl.hpp",
        "src/glm/gtc/noise.hpp",
        "src/glm/gtc/type_precision.hpp",
        "src/glm/gtc/epsilon.hpp",
        "src/glm/gtc/noise.inl.hpp",
        "src/glm/gtc/type_precision.inl.hpp",
        "src/glm/gtc/epsilon.inl.hpp",
        "src/glm/gtc/packing.hpp",
        "src/glm/gtc/type_ptr.hpp",
        "src/glm/gtc/functions.hpp",
        "src/glm/gtc/packing.inl.hpp",
        "src/glm/gtc/type_ptr.inl.hpp",
        "src/glm/gtc/functions.inl.hpp",
        "src/glm/gtc/quaternion.hpp",
        "src/glm/gtc/ulp.hpp",
        "src/glm/gtc/integer.hpp",
        "src/glm/gtc/quaternion.inl.hpp",
        "src/glm/gtc/ulp.inl.hpp",
        "src/glm/gtc/integer.inl.hpp",
        "src/glm/gtc/quaternion_simd.inl.hpp",
        "src/glm/gtc/vec1.hpp",
        "src/glm/gtc/matrix_access.hpp",
        "src/glm/gtc/random.hpp",
        "src/glm/gtc/vec1.inl.hpp",

        "src/glm/gtx/associated_min_max.hpp",
        "src/glm/gtx/associated_min_max.inl.hpp",
        "src/glm/gtx/bit.hpp",
        "src/glm/gtx/bit.inl.hpp",
        "src/glm/gtx/closest_point.hpp",
        "src/glm/gtx/closest_point.inl.hpp",
        "src/glm/gtx/color_space.hpp",
        "src/glm/gtx/color_space.inl.hpp",
        "src/glm/gtx/color_space_YCoCg.hpp",
        "src/glm/gtx/color_space_YCoCg.inl.hpp",
        "src/glm/gtx/common.hpp",
        "src/glm/gtx/common.inl.hpp",
        "src/glm/gtx/compatibility.hpp",
        "src/glm/gtx/compatibility.inl.hpp",
        "src/glm/gtx/component_wise.hpp",
        "src/glm/gtx/component_wise.inl.hpp",
        "src/glm/gtx/dual_quaternion.hpp",
        "src/glm/gtx/dual_quaternion.inl.hpp",
        "src/glm/gtx/euler_angles.hpp",
        "src/glm/gtx/euler_angles.inl.hpp",
        "src/glm/gtx/extended_min_max.hpp",
        "src/glm/gtx/extended_min_max.inl.hpp",
        "src/glm/gtx/extend.hpp",
        "src/glm/gtx/extend.inl.hpp",
        "src/glm/gtx/fast_exponential.hpp",
        "src/glm/gtx/fast_exponential.inl.hpp",
        "src/glm/gtx/fast_square_root.hpp",
        "src/glm/gtx/fast_square_root.inl.hpp",
        "src/glm/gtx/fast_trigonometry.hpp",
        "src/glm/gtx/fast_trigonometry.inl.hpp",
        "src/glm/gtx/float_notmalize.inl.hpp",
        "src/glm/gtx/gradient_paint.hpp",
        "src/glm/gtx/gradient_paint.inl.hpp",
        "src/glm/gtx/handed_coordinate_space.hpp",
        "src/glm/gtx/handed_coordinate_space.inl.hpp",
        "src/glm/gtx/hash.hpp",
        "src/glm/gtx/hash.inl.hpp",
        "src/glm/gtx/integer.hpp",
        "src/glm/gtx/integer.inl.hpp",
        "src/glm/gtx/intersect.hpp",
        "src/glm/gtx/intersect.inl.hpp",
        "src/glm/gtx/io.hpp",
        "src/glm/gtx/io.inl.hpp",
        "src/glm/gtx/log_base.hpp",
        "src/glm/gtx/log_base.inl.hpp",
        "src/glm/gtx/matrix_cross_product.hpp",
        "src/glm/gtx/matrix_cross_product.inl.hpp",
        "src/glm/gtx/matrix_decompose.hpp",
        "src/glm/gtx/matrix_decompose.inl.hpp",
        "src/glm/gtx/matrix_interpolation.hpp",
        "src/glm/gtx/matrix_interpolation.inl.hpp",
        "src/glm/gtx/matrix_major_storage.hpp",
        "src/glm/gtx/matrix_major_storage.inl.hpp",
        "src/glm/gtx/matrix_operation.hpp",
        "src/glm/gtx/matrix_operation.inl.hpp",
        "src/glm/gtx/matrix_query.hpp",
        "src/glm/gtx/matrix_query.inl.hpp",
        "src/glm/gtx/matrix_transform_2d.hpp",
        "src/glm/gtx/matrix_transform_2d.inl.hpp",
        "src/glm/gtx/mixed_product.hpp",
        "src/glm/gtx/mixed_product.inl.hpp",
        "src/glm/gtx/normal.hpp",
        "src/glm/gtx/normal.inl.hpp",
        "src/glm/gtx/normalize_dot.hpp",
        "src/glm/gtx/normalize_dot.inl.hpp",
        "src/glm/gtx/norm.hpp",
        "src/glm/gtx/norm.inl.hpp",
        "src/glm/gtx/number_precision.hpp",
        "src/glm/gtx/number_precision.inl.hpp",
        "src/glm/gtx/optimum_pow.hpp",
        "src/glm/gtx/optimum_pow.inl.hpp",
        "src/glm/gtx/orthonormalize.hpp",
        "src/glm/gtx/orthonormalize.inl.hpp",
        "src/glm/gtx/perpendicular.hpp",
        "src/glm/gtx/perpendicular.inl.hpp",
        "src/glm/gtx/polar_coordinates.hpp",
        "src/glm/gtx/polar_coordinates.inl.hpp",
        "src/glm/gtx/projection.hpp",
        "src/glm/gtx/projection.inl.hpp",
        "src/glm/gtx/quaternion.hpp",
        "src/glm/gtx/quaternion.inl.hpp",
        "src/glm/gtx/range.hpp",
        "src/glm/gtx/raw_data.hpp",
        "src/glm/gtx/raw_data.inl.hpp",
        "src/glm/gtx/rotate_normalized_axis.hpp",
        "src/glm/gtx/rotate_normalized_axis.inl.hpp",
        "src/glm/gtx/rotate_vector.hpp",
        "src/glm/gtx/rotate_vector.inl.hpp",
        "src/glm/gtx/scalar_multiplication.hpp",
        "src/glm/gtx/scalar_relational.hpp",
        "src/glm/gtx/scalar_relational.inl.hpp",
        "src/glm/gtx/spline.hpp",
        "src/glm/gtx/spline.inl.hpp",
        "src/glm/gtx/std_based_type.hpp",
        "src/glm/gtx/std_based_type.inl.hpp",
        "src/glm/gtx/string_cast.hpp",
        "src/glm/gtx/string_cast.inl.hpp",
        "src/glm/gtx/transform2.hpp",
        "src/glm/gtx/transform2.inl.hpp",
        "src/glm/gtx/transform.hpp",
        "src/glm/gtx/transform.inl.hpp",
        "src/glm/gtx/type_aligned.hpp",
        "src/glm/gtx/type_aligned.inl.hpp",
        "src/glm/gtx/type_trait.hpp",
        "src/glm/gtx/type_trait.inl.hpp",
        "src/glm/gtx/vector_angle.hpp",
        "src/glm/gtx/vector_angle.inl.hpp",
        "src/glm/gtx/vector_query.hpp",
        "src/glm/gtx/vector_query.inl.hpp",
        "src/glm/gtx/wrap.hpp",
        "src/glm/gtx/wrap.inl.hpp",


        "src/glm/simd/platform.h",
        "src/glm/simd/common.h",
        "src/glm/simd/exponential.h",
        "src/glm/simd/integer.h",
        "src/glm/simd/matrix.h",
        "src/glm/simd/packing.h",
        "src/glm/simd/trigonometric.h",
        "src/glm/simd/vector_relational.h",
    ],
    hdrs = [
        "src/ODGlobal.h",
        "src/WorldEntityManager.h",
        "src/WorldMath.h",
        "src/WorldEntityAxis.h",
        "src/WorldException.h",

        "src/drivers/WorldEntityChangeset.h",
        "src/drivers/WorldEntityManagerDriver.h",
        "src/drivers/WorldEntityManagerDriverFile.h",

        "src/entities/WorldBridge.h",
        "src/entities/WorldLaneType.h",
        "src/entities/WorldConnectable.h",
        "src/entities/WorldLaneValidity.h",
        "src/entities/WorldContactPoint.h",      
        "src/entities/WorldPPolyParameterRange.h",
        "src/entities/WorldController.h",       
        "src/entities/WorldRoad.h",
        "src/entities/WorldControllerParts.h",
        "src/entities/WorldRoadKind.h",
        "src/entities/WorldCrossfallSide.h",        
        "src/entities/WorldRoadMarkColor.h",
        "src/entities/WorldEntity.h",               
        "src/entities/WorldRoadMarkKind.h",
        "src/entities/WorldEntityHeader.h",         
        "src/entities/WorldRoadMarkLineRule.h",
        "src/entities/WorldEntityMeta.h",
        "src/entities/WorldRoadMarkWeight.h",
        "src/entities/WorldEntityPart.h",
        "src/entities/WorldRoadObject.h",
        "src/entities/WorldEntityProperty.h",
        "src/entities/WorldRoadObjectOrientation.h",
        "src/entities/WorldEntityProperty_pugi.h",
        "src/entities/WorldRoadObjectParkingSpaceAccess.h",
        "src/entities/WorldEntityReferencing.h",
        "src/entities/WorldRoadObjectParkingSpaceMarkingSide.h",
        "src/entities/WorldJunctionGroup.h",        
        "src/entities/WorldRoadObjectParts.h",
        "src/entities/WorldJunctionGroupParts.h",   
        "src/entities/WorldRoadParts.h",
        "src/entities/WorldJunctionGroupType.h",    
        "src/entities/WorldSignal.h",
        "src/entities/WorldJunction.h",             
        "src/entities/WorldSignalParts.h",
        "src/entities/WorldJunctionParts.h",        
        "src/entities/WorldSpeedUnit.h",
        "src/entities/WorldLaneChange.h",          
        "src/entities/WorldTunnel.h",
        "src/entities/WorldLaneRestrictionType.h",

 
       "src/geom/FOpenDriveImporter.h",
       "src/geom/ODRoadGeom.h",
       "src/geom/RoadGeom.h",
       "src/geom/ODRoadAPI.h",
       "src/geom/RoadBuilder.h",
       "src/geom/RoadUtil.h",

       "src/iterators/WorldArcIterator.h",
       "src/iterators/WorldNetIteratorBase.h",
       "src/iterators/WorldHermiteIterator.h", 
       "src/iterators/WorldSpiralIterator.h",

       "src/refline/WorldRefLineBuilder.h",
       "src/refline/WorldRefLineGraph.h",
       "src/refline/WorldRefLineSpline.h",

       "src/spiral/odrSpiral.h",

       "src/pugixml/pugiconfig.hpp",
       "src/pugixml/pugixml.hpp",

       "src/nlohmann/adl_serializer.hpp",
       "src/nlohmann/json_fwd.hpp",
       "src/nlohmann/json.hpp",

       "src/nlohmann/detail/macro_scope.hpp",
       "src/nlohmann/detail/exceptions.hpp",
       "src/nlohmann/detail/json_pointer.hpp",
       "src/nlohmann/detail/macro_unscope.hpp",
       "src/nlohmann/detail/value_t.hpp",
       "src/nlohmann/detail/json_ref.hpp",
       "src/nlohmann/detail/meta.hpp",

       "src/nlohmann/detail/conversions/from_json.hpp",
       "src/nlohmann/detail/conversions/to_chars.hpp",
       "src/nlohmann/detail/conversions/to_json.hpp",

       "src/nlohmann/detail/input/binary_reader.hpp",
       "src/nlohmann/detail/input/input_adapters.hpp",
       "src/nlohmann/detail/input/lexer.hpp",
       "src/nlohmann/detail/input/parser.hpp",

       "src/nlohmann/detail/iterators/internal_iterator.hpp",
       "src/nlohmann/detail/iterators/iter_impl.hpp",
       "src/nlohmann/detail/iterators/primitive_iterator.hpp",
       "src/nlohmann/detail/iterators/iteration_proxy.hpp",
       "src/nlohmann/detail/iterators/json_reverse_iterator.hpp",

       "src/nlohmann/detail/output/binary_writer.hpp",
       "src/nlohmann/detail/output/output_adapters.hpp",  
       "src/nlohmann/detail/output/serializer.hpp",
 
    ],
    copts = [
        #"-Wno-unused-variable",
        "-Wno-sign-compare",
        "-Wno-switch",
        "-Wno-unused-but-set-variable",
        #"-DBUILD_ROAD_ENGINE",
        #"-DGLM_FORCE_PURE",
        #"-DGLM_HAS_ONLY_XYZW",
        #"-std=c++11",
    ],
    includes = [
        "src",
    ],
    visibility = ["//visibility:public"],
)
